﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows.Forms;

namespace Siav
{
    public partial class frmSubCateriasdeProdutos : Form
    {
        public frmSubCateriasdeProdutos()
        {
            InitializeComponent();
        }

        SiavEntities Entidades = new SiavEntities();
        private IEnumerable<SubCategorias> SubsW;
        NumberFormatInfo nfi = new CultureInfo("pt-br", false).NumberFormat;
        public void CarregaSubCategorias(int pProdutoSelecionado)
        {
            lstProdutos.Items.Clear();

            var Subs = (from p in Entidades.SubCategorias
                        select p).ToList();
            SubsW = Subs.Where(su => su.medProduto.Equals(pProdutoSelecionado));
            foreach (SubCategorias Sub in SubsW)
            {
                ListViewItem item = new ListViewItem();
                item.Text = Sub.medCodigo.ToString();
                item.SubItems.Add(Sub.medDescricao);
                item.SubItems.Add(Sub.Produtos.NomeProduto);
                item.SubItems.Add(Sub.medLargura.ToString());
                item.SubItems.Add(Sub.medAltura.ToString());
                item.SubItems.Add(Sub.medEspessura);
                lstProdutos.Items.Add(item);
            }
        }

        private void CarregaProdutos()
        {
            var Produtos = Entidades.Produtos.ToList();
            cboProduto.DataSource = Produtos;
            cboProduto.DisplayMember = "NomeProduto";
            cboProduto.ValueMember = "Codigo";
        }

        private void CarregaPigmentacao()
        {
            var Pig = (from p in Entidades.Pigmentacao
                       select p).ToList();
            cboPigmentacao.DataSource = Pig;
            cboPigmentacao.DisplayMember = "Descricao";
            cboPigmentacao.ValueMember = "Codigo";
        }

        private void frmSubCateriasdeProdutos_Load(object sender, EventArgs e)
        {
            CarregaProdutos();
            CarregaPigmentacao();

            if (cboProduto.SelectedValue.ToString() != "Siav.Produtos")
            {
                CarregaSubCategorias(int.Parse(cboProduto.SelectedValue.ToString()));
            }

        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            Validacoes.LimpaCamposFormulario(Controls);
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                if (tCodigo.Text == "")
                {
                    SubCategorias Subs = new SubCategorias();
                    Subs.medProduto = int.Parse(cboProduto.SelectedValue.ToString());
                    Subs.medDescricao = txtDescricao.Text;
                    Subs.medUnidade = cboUnidade.Text;
                    Subs.medLargura = int.Parse(txtLargura.Text);
                    Subs.medAltura = int.Parse(txtAltura.Text);
                    Subs.medEspessura = txtEspessura.Text;
                    Subs.medTipoMaterial = cboTipoMaterial.Text;
                    Subs.medPigmentacao = int.Parse(cboPigmentacao.SelectedValue.ToString());
                    Subs.medSanfonado = cboSanfonado.Text;
                    Subs.medSolda = cboSolda.Text;
                    Subs.medTratamento = cboTratamento.Text;
                    Subs.medEmbPara = txtEmbPara.Text;
                    Subs.medPreco = decimal.Parse(txtPreco.Text);
                    Entidades.AddObject("SubCategorias", Subs);
                    Entidades.SaveChanges();
                    if (cboProduto.SelectedValue.ToString() != "Siav.Produtos")
                    {
                        CarregaSubCategorias(int.Parse(cboProduto.SelectedValue.ToString()));
                    }
                    Validacoes.LimpaCamposFormulario(Controls);


                }
                else
                {
                    int Codigo = int.Parse(tCodigo.Text);
                    var Subs = (from p in Entidades.SubCategorias
                                where p.medCodigo.Equals(Codigo)
                                select p).First();
                    Subs.medProduto = int.Parse(cboProduto.SelectedValue.ToString());
                    Subs.medDescricao = txtDescricao.Text;
                    Subs.medUnidade = cboUnidade.Text;
                    Subs.medLargura = decimal.Parse(txtLargura.Text);
                    Subs.medAltura = decimal.Parse(txtAltura.Text);
                    Subs.medEspessura = txtEspessura.Text;
                    Subs.medTipoMaterial = cboTipoMaterial.Text;
                    Subs.medPigmentacao = int.Parse(cboPigmentacao.SelectedValue.ToString());
                    Subs.medSanfonado = cboSanfonado.Text;
                    Subs.medSolda = cboSolda.Text;
                    Subs.medTratamento = cboTratamento.Text;
                    Subs.medEmbPara = txtEmbPara.Text;
                    Subs.medPreco = decimal.Parse(txtPreco.Text);
                    //Entidades.AddObject("SubCategorias", Subs);
                    Entidades.SaveChanges();
                    if (cboProduto.SelectedValue.ToString() != "Siav.Produtos")
                    {
                        CarregaSubCategorias(int.Parse(cboProduto.SelectedValue.ToString()));
                    }
                    Validacoes.LimpaCamposFormulario(Controls);

                }
            }
            catch //(Exception ex)
            {
                MessageBox.Show("Erro, Verifique se você preencheu todos os campos e se os mesmo estão com o formato correto de dados", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //MessageBox.Show(ex.Message.ToString());
            }
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            if (tCodigo.Text != "")
            {
                int Codigo = int.Parse(tCodigo.Text);
                if (MessageBox.Show("Tem certeza que deseja excluir o item selecionado?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    var Excluir = (from Pro in Entidades.SubCategorias
                                   where Pro.medCodigo.Equals(Codigo)
                                   select Pro).First();

                    Entidades.DeleteObject(Excluir);
                    Entidades.SaveChanges();
                    MessageBox.Show("Item Excluido com sucesso", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    if (cboProduto.SelectedValue.ToString() != "Siav.Produtos")
                    {
                        CarregaSubCategorias(int.Parse(cboProduto.SelectedValue.ToString()));
                    }
                    Validacoes.LimpaCamposFormulario(Controls);
                }
            }
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void lstProdutos_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
        {
            if (e.IsSelected)
            {
                int pcodigo = int.Parse(lstProdutos.SelectedItems[0].Text.ToString());
                var Valor = (from v in Entidades.SubCategorias
                             where v.medCodigo.Equals(pcodigo)
                             select v).First();
                tCodigo.Text = Valor.medCodigo.ToString();
                txtDescricao.Text = Valor.medDescricao;
                cboProduto.SelectedValue = Valor.medProduto;
                cboUnidade.Text = Valor.medUnidade;
                txtAltura.Text = Valor.medAltura.ToString();
                txtLargura.Text = Valor.medLargura.ToString();
                txtEspessura.Text = Valor.medEspessura.ToString();
                cboTipoMaterial.Text = Valor.medTipoMaterial;
                //if (cboPigmentacao.SelectedValue != null)
                // {
                cboPigmentacao.SelectedValue = int.Parse(Valor.medPigmentacao.ToString());
                // }
                cboSanfonado.Text = Valor.medSanfonado;
                cboSolda.Text = Valor.medSolda;
                cboTratamento.Text = Valor.medTratamento;
                txtEmbPara.Text = Valor.medEmbPara;
                nfi.NumberDecimalDigits = 2;
                if (Valor.medPreco.ToString() != "")
                {
                    txtPreco.Text = Valor.medPreco.Value.ToString("N", nfi);
                }
            }
        }

        private void lstProdutos_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.F10:
                    btnSalvar_Click(sender, e);
                    break;
                case Keys.F1:
                    btnNovo_Click(sender, e);
                    break;
                case Keys.Escape:
                    btnSair_Click(sender, e);
                    break;
                case Keys.F12:
                    btnExcluir_Click(sender, e);
                    break;
            }
        }

        private void cboProduto_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (cboProduto.SelectedValue.ToString() != "Siav.Produtos")
                {
                    CarregaSubCategorias(int.Parse(cboProduto.SelectedValue.ToString()));
                }
            }
            catch
            {

            }
        }
    }
}
